We consider a robot with a mobile base joined to a body, also called upper body.
In standard behavior, the robot is in contact with all of its wheels, and dynamically stable while the Center of Pressure (CoP) which is the barycenter of the forces acting between the ground and the robot, is strictly inside the convex hull defined by its wheel contact points. In absence of disturbance, this CoP constraint is always respected. However, when disturbances appear, the CoP can be on the bounds of the support hull. In that case, the robot can start to tilt, and if nothing is done, it can fall. So our problem is to control the robot over two dynamic models: when the robot is not tilting, and when it is.
When the robot is not tilting, we can found some papers about controlling a mobile robot with dynamic stability constraints, or about controlling a humanoid two-legged robots.
Some recent works deal with controlling a robot with dynamical constraints, caused by limbs such as a manipulator arm. K. Mingeuk and al. have worked on the stabilization of a wheeled platform using dynamic constraints: “Stabilization of a rapid four-wheeled mobile platform using the zmp stabilization method”. They use a direct linear quadratic regulator (LQR) method to control the platform. The inconvenient of this method is that the submitted dynamic constraints require having the CoP (Center of Pressure) on the middle of the platform. The CoP is the barycenter of the contact forces between the robot and the ground. This method involves losing several DoF (Degree of Freedom): indeed, to prevent a robot from falling, the CoP needs to be only in the convex polygon defined by the contact points between the wheels and the ground.
In another paper, Y. Li and al. present a simple controller of a mobile robot with dynamic constraints: “The dynamic stability criterion on the wheel-based humanoid robot based on zmp modeling”. The difference with the K. Mingeuk and A I. publication is that it takes into account the full CoP constraint, which is a sum of inequality constraints. This controller is a pid-control iterated on a complete model of the robot to find a torque command where the CoP is in the support polygon.
Concerning humanoid robotics, P. B. Wieber, H. Diedam and A. Herdt have described a method to control humanoid two-legged robot with highly constrained dynamic: “Walking without thinking about it”. This most recent approach concerns the linear predictive control based on a 3d linear inverted pendulum model. Using a simple model of the robot, this control law predicts the dynamic of its state in the future, in order to ensure that the current command sent to the robot will not cause an inevitable fall in a few seconds. Concerning the biped humanoid robot NAO, an implementation of this control law can be found in a paper written by D. Gouaillier, C. Collette and K. Kilner: “Omni-directional closed-loop walk for NAO”. But the robot NAO is small and this method would not give good results notably for a higher humanoid robot as shown FIG. 1, for instance with the following features:                20 Degrees of freedom (DoF) (2 DoF on the head 160, 2×6 DoF on the arms 170, 3 DoF on the leg 180 and 3 DoF in the mobile base 140),        1.37 m height 110,        0.65 m width 130,        0.40 m depth 120,        30 kg total mass,        one leg 180 linked to the omnidirectional base 140 with three wheels 141. The mobile base has a triangular shape of 0.422 m length and is able to move the robot at a maximum velocity of 1:4 m/s−1 and acceleration of 1:7 m/s−2 for a short time. The nominal velocity and acceleration are 0:5 m/s−1 and 1:0 m/s−2.        
Concerning the case when the robot is tilting, we can link this problem with the control of one or two wheeled mobile robot. However, in our case, we do not want to control the robot around an unstable equilibrium direction (generally the vertical), like all one or two wheeled mobile robots. Many papers can be found about controlling these robots. They are based on different types of control like:
PID force control as described in the publication by J. K. Ahn and S. J. Lee, «Force control application to a mobile manipulator with balancing mechanism,” 2010,
Linear Quadratic Regulator as described in the publication by X. Changkai, L. Ming, and P. Fangyu, “The system design and lqr control of a two-wheels self-balancing mobile robot,” 2011. or
Sliding Mode Control as described in the publication by K. Sho-Tsung, C. Wan-Jung, and H. Ming-Tzu, “Balancing of a spherical inverted pendulum with an omni-directional mobile robot,” IEEE Multi-conference on Systems and Control, 2013.
All of these controllers have for objective to control the robot around an unstable equilibrium direction, depending on gravity and on external forces.
Concerning humanoid robotic, we can found some papers about push recovering. The main concepts are to manage over four possibilities of control:                move the CoP using the upper bodies,        create a torque using the ankle of the foot,        create some angular momentums using the arms, and        do some steps.        
They cannot be applied in our case because they strongly depend on the bipedal mechanic, which implies that the feet cannot roll or slip on the ground, and that they can do some step to recover from a push. In our case, the CoP cannot be displaced because there is no surface of contact on the tilt direction. Also another difficulty of our problem is to take into account the discrete switch of the dynamic model (presence or absence of some contact forces). This implies that some impact can occur. Generally, manage with impact is a hard question for real-time control.
There is therefore a need for controlling both the mobile base of a humanoid robot and its body, while taking into account their dynamical constraints and that the robot can be strongly disturbed and can tilt around its wheels.
So, instead of proposing a unique controller which will be valid in the different possible dynamical states, we define two controllers, one when the robot is not tilting, and one when it is. In order to ensure a correct and smooth transition between the two controllers, a third controller is defined to deal with a landing phase and a supervisor is defined to address them accordingly.